package com.java;

import org.junit.Test;

import java.util.Optional;

public class OptionalTest {

    @Test
    public void test1(){
        //empty():创建的Optional对象内部的value = null
        final Optional<Object> optional = Optional.empty();
        if(!optional.isPresent()){
            System.out.println("数据为空");
        }
        System.out.println(optional);
        System.out.println(optional.isPresent());
        System.out.println(optional.isEmpty());
        //如果Optional封装的数据value为空，则get()报错。否则，value不为空时，返回value.
//        System.out.println(optional.get());
    }

    @Test
    public void test2(){
        String str = "hello";
//        str = null;
        //of(T t):封装数据t生成Optional对象。要求t非空，否则报错。
        Optional<String> op1 = Optional.of(str);
        //get()通常与of()方法搭配使用。用于获取内部的封装的数据value
        System.out.println(op1.get());
    }

    @Test
    public void test3(){
        String str = "beijing";
        str = null;
        //ofNullable(T t) ：封装数据t赋给Optional内部的value。不要求t非空
        final Optional<String> op1 = Optional.ofNullable(str);
        //orElse(T t1):如果Optional内部的value非空，则返回此value值。如果
        //value为空，则返回t1.
        final String s = op1.orElse("shanghai");
        System.out.println(s);
    }
}
